package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IEmployeeMapper {
    /**
     * 添加员工
     * @param employee 员工对象
     */
    public void add(EmployeeBean employee);

    /**
     * 员工离职
     * 1、将员工状态修改为离职
     * 2、将该员工正在进行的项目(项目进度进度中，完成项目时间为未完成)，完成项目日期修改为当前日期
     * @param emId 员工id
     */
    public void quit(Integer emId);

    /**
     * 按id修改员工电话与工资
     * @param emId 员工id
     * @param newPhone 新电话
     * @param newSalary 新工资
     */
    public void update(@Param("emId") Integer emId,@Param("newPhone") String newPhone,@Param("newSalary") Integer newSalary);

    /**
     * 按id员工详细信息，并显示参与的项目进度信息
     * 进度信息中需要包含项目名称
     * @param emId 员工id
     * @return 员工对象
     */
    public EmployeeBean findById(Integer emId);

    /**
     * 按id查询员工信息，并且显示正在进行的项目
     * @param emId 员工id
     * @return 员工对象
     */
    public EmployeeBean findByIdAndProceed(Integer emId);

    /**
     * 动态查询查询在职（固定条件）员工
     * @param name 姓名
     * @param prjId 项目id（固定条件）
     * @param skill 专长
     * @return 员工集合
     */
    public List<EmployeeBean> findByItem(@Param("name") String name,
                                         @Param("prjId") Integer prjId,
                                         @Param("skill") String skill);


    /**
     * 动态分页查询员工信息
     * @param PageNO 页码
     * @param name 姓名
     * @param skill 专长
     * @param status 状态
     * @param sort 排序规则
     * @return 员工分页对象
     */
    public List<EmployeeBean> cutByItem(@Param("name") String name,
                                        @Param("skill") String skill,
                                        @Param("status") String status,
                                        @Param("sort") String sort);
}
